package com.sc.nft.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sc.nft.entity.EcologyReforgeConf;
import com.sc.nft.entity.EcologyReforgeExpendConf;
import com.sc.nft.entity.vo.AdminSimpleReforgeCollectionVO;
import com.sc.nft.entity.vo.ecology.*;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 生态-重铸-配置 服务类
 * </p>
 *
 * @author author
 * @since 2024-06-14
 */
public interface AdminEcologyReforgeConfService {

    /**
     * 新增生态重铸配置
     *
     * @param ecologyReforgeConf
     * @param expendConfList
     */
    void addAndUpdateReforgeConf(EcologyReforgeConf ecologyReforgeConf, List<EcologyReforgeExpendConf> expendConfList);

    /**
     * 分页获取生态重铸配置
     *
     * @param collectionName
     * @param pageNo
     * @param pageSize
     * @return
     */
    Page<AdminGetPageReforgeConfVO> getPageReforgeConf(String collectionName, Integer pageNo, Integer pageSize);

    /**
     * 获取生态铸造配置详情
     *
     * @param id
     * @return
     */
    AdminReforgeConfDetailsVO getReforgeConfDetails(Long id);

    /**
     * 删除生态铸造消耗配置
     *
     * @param id
     */
    void delExpendById(Long id);

    /**
     * 生态重铸配置上下架
     *
     * @param id
     * @param status
     */
    void updateReforgeConfStatusgById(Long id, Boolean status);

    /**
     * 生态重铸配置排序
     *
     * @param id
     * @param sort
     */
    void updateReforgeConfSortById(Long id, Long sort);

    /**
     * 删除生态重铸配置
     *
     * @param id
     */
    void delReforgeConfById(Long id);

    /**
     * 获取用户 生态重铸记录
     *
     * @param collectionName
     * @param userTel
     * @param startTime
     * @param endTime
     * @param pageNo
     * @param pageSize
     * @return
     */
    Page<AdminEcologyReforgeUserRecordsVO> getPageUserRecordsRecords(String collectionName, String userTel, String startTime, String endTime, Integer pageNo, Integer pageSize);

    /**
     * 获取用户 生态重铸记录 导出
     *
     * @param collectionName
     * @param userTel
     * @param startTime
     * @param endTime
     * @return
     */
    List<AdminEcologyReforgeUserRecordsVO> getPageUserRecordsExport(String collectionName, String userTel, String startTime, String endTime);

    /**
     * 用户重铸上限(汇总)
     *
     * @param userTel
     * @return
     */
    List<AdminUserEcologyReforgeUpperLimitDetailsVO> userEcologyReforgeUpperLimitDetails(String userTel);

    /**
     * 用户重铸上限记录(详情
     *
     * @param userId
     * @param collectionId
     * @param beginTime
     * @param endTime
     * @param pageNo
     * @param pageSize
     * @return
     */
    Page<AdminUserEcologyReforgeUpperLimitPageVO> userEcologyReforgeUpperLimitPage(Long userId, Long collectionId, Date beginTime, Date endTime, Integer pageNo, Integer pageSize);

    /**
     * 获取简单的重铸藏品列表
     *
     * @param pageNo
     * @param pageSize
     * @return
     */
    Page<AdminSimpleReforgeCollectionVO> getSimplePage(Integer pageNo, Integer pageSize);

    /**
     * 时间配置
     *
     * @param startTime
     * @param endTime
     */
    void timeConfig(String startTime, String endTime, String remark);

    /**
     * 时间配置详情
     *
     * @return
     */
    EcologyReforgeTimeVO timeDetail();
}
